// 题目链接：https://www.luogu.com.cn/problem/P1706

#include <iostream>

using namespace std;

const int N = 20;

int n;
int q[N];
bool st[N];

void DFS(int pos)
{
    if (pos > n)
    {
        for (int i = 1; i <= n; ++i)
        {
            printf("%5d", q[i]);
        }
        printf("\n");

        return;
    }

    for (int i = 1; i <= n; ++i)
    {
        if (!st[i])
        {
            st[i] = true;
            q[pos] = i;

            DFS(pos + 1);

            // 恢复环境
            st[i] = false;
            q[pos] = 0;
        }
    }
}

int main()
{
    scanf("%d", &n);
    DFS(1);

    return 0;
}